910. Среднее арифметическое положительных

 

Задана последовательность вещественных чисел. Найти среднее арифметическое положительных чисел.

 

Вход. В первой строке задано количество чисел n (0 < n ≤ 100). В следующей строке заданы n действительных чисел, значения которых не превосходят по модулю 100.

 

Выход. Вывести среднее арифметическое положительных чисел с 2 десятичными знаками. В случае отсутствия положительных чисел вывести сообщение Not Found (без кавычек).

 

Пример входа 1

Пример выхода 1

3

5.2 -2 4

4.60

 

 

Пример входа 2

Пример выхода 2

3

-5.2 -2 -4

Not Found

 

 

 

РЕШЕНИЕ

циклы

 

Анализ алгоритма

В переменной s подсчитаем сумму положительных чисел, в cnt – их количество. Ответом будет значение s / cnt.

 

Реализация алгоритма

Читаем значение n.

 

s = cnt = 0;

scanf("%d",&n);

 

Последовательно читаем n входных чисел.

 

for(i = 0; i < n; i++)

{

  scanf("%lf",&val);

 

Если число val положительное, то прибавляем его к сумме s и увеличиваем количество положительных чисел cnt на 1.

 

  if (val > 0)

  {

    s += val;

    cnt++;

  }

}

 

В зависимости от количества положительных чисел cnt выводим ответ:

 

if (cnt == 0) printf("Not Found\n");

else printf("%.2lf\n",s / cnt);

 

Java реализация

 

import java.util.*;

 

public class Main

{

  public static void main(String[] args)

  {

    Scanner con = new Scanner(System.in);

    int n = con.nextInt();

    double s = 0;

    int cnt = 0;

    for(int i = 0; i < n; i++)

    {

      double val = con.nextDouble();

      if (val > 0)

      {

        s += val;

        cnt++;

      }

    }

    if (cnt == 0) System.out.println("Not Found");

    else

      System.out.printf("%.2f\n", s / cnt);

    con.close();

  }

}

 

Python реализация

 

n = int(input())

lst = list(map(float, input().split()))

 

l = []

for i in range(n):

  if lst[i] > 0: l.append(lst[i])

 

if len(l) > 0:

  average = float(sum(l) / len(l))

  print('%.2f' % average)

else:

  print('Not Found')